package com.dingding.service.core.common.dao;

import com.dingding.common.core.beans.special.SpecialUserAuthInfo;
import com.dingding.common.core.beans.special.Specialuserinfo;
import com.dingding.common.core.beans.special.Specialuservehicleinfo;
import com.dingding.facade.user.common.dto.common.ReqRegisterDriverDTO;
import com.dingding.facade.user.dto.common.driver.ReqSyncDriverAuthStateDTO;
import com.dingding.facade.user.dto.common.driver.ResDriverAuthDetailsDTO;
import com.dingding.facade.user.dto.common.driver.ResSyncDriverAuthStateDTO;

/**
 * 
 * @ClassName: IDriverDao 
 * @Description: 司机共同操作数据的dao
 * @author hufan
 * @date 2016年12月1日 下午7:54:17 
 *
 */
public interface IDriverDao {
	
	/**
	 * 
	 * @Title: saveSpecialuservehicleinfo 
	 * @Description: 保存司机车辆信息
	 * @param  参数说明 
	 * @author hufan
	 * @return 返回类型 
	 * @throws
	 */
	public boolean saveSpecialuservehicleinfo(Specialuservehicleinfo specialuservehicleinfo);
	
	/**
	 * 
	 * @Title: getSpecialuservehicleinfoByUserId 
	 * @Description: 根据userid查询车辆信息表
	 * @param  参数说明 
	 * @author hufan
	 * @return 返回类型 
	 * @throws
	 */
	public Specialuservehicleinfo getSpecialuservehicleinfoByUserId(String userId);
	
	/**
	 * 
	 * @Title: updateSpecialuservehicleinfo 
	 * @Description: 更新司机车辆信息
	 * @param  参数说明 
	 * @author hufan
	 * @return 返回类型 
	 * @throws
	 */
	public boolean updateSpecialuservehicleinfo(Specialuservehicleinfo specialuservehicleinfo);
	
	/**
	 * 
	 * @Title: saveSpecialUserAuthInfo 
	 * @Description: 添加用户认证信息
	 * @param  参数说明 
	 * @author hufan
	 * @return 返回类型 
	 * @throws
	 */
	public boolean saveSpecialUserAuthInfo(SpecialUserAuthInfo specialUserAuthInfo);
	
	/**
	 * 
	 * @Title: getSpecialuservehicleinfoByLisencePlate 
	 * @Description: 根据userid、车牌号码查询车辆信息表
	 * @param  参数说明 
	 * @author hufan
	 * @return 返回类型 
	 * @throws
	 */
	public Specialuservehicleinfo getSpecialuservehicleinfoByLisencePlate(String lisencePlate);
	
	/**
	 * 
	 * @Title: getSpecialuserinfoByUserId 
	 * @Description: 根据userid查询司机信息
	 * @param  参数说明 
	 * @author hufan
	 * @return 返回类型 
	 * @throws
	 */
	public Specialuserinfo getSpecialuserinfoByUserId(String userId);
	
	
	/**
	 * 
	 * @Title: saveSpecialuserinfo 
	 * @Description: 保存司机基本信息
	 * @param  参数说明 
	 * @author hufan
	 * @return 返回类型 
	 * @throws
	 */
	public boolean saveSpecialuserinfo(Specialuserinfo specialuserinfo);
	
	/**
	 * 
	 * @Title: updateSpecialuserinfo 
	 * @Description: 更新Specialuserinfo
	 * @param  参数说明 
	 * @author hufan
	 * @return 返回类型 
	 * @throws
	 */
	public boolean updateSpecialuserinfo(Specialuserinfo specialuserinfo);
	
	/**
	 * 
	 * @Title: getSpecialUserAuthInfo 
	 * @Description: 根据userId查询用户身份信息
	 * @param  参数说明 
	 * @author hufan
	 * @return 返回类型 
	 * @throws
	 */
	public SpecialUserAuthInfo getSpecialUserAuthInfo(String userId);
	
	/**
	 * 
	 * @Title: updateSpecialUserAuthInfo 
	 * @Description: 修改司机认证信息
	 * @param  参数说明 
	 * @author hufan
	 * @return 返回类型 
	 * @throws
	 */
	public boolean updateSpecialUserAuthInfo(SpecialUserAuthInfo specialUserAuthInfo);
	
	/**
	 * 
	 * @Title: getResDriverAuthDetails 
	 * @Description: 根据用户id查询司机认证详情(包含司机信息、车辆信息)
	 * @param  参数说明 
	 * @author hufan
	 * @return 返回类型 
	 * @throws
	 */
	public ResDriverAuthDetailsDTO getResDriverAuthDetails(String userId);
	
	/**
	 * 
	 * @Title: changeDriverRole 
	 * @Description: 修改用户登录表中的用户角色
	 * @param  参数说明 
	 * @author hufan
	 * @return 返回类型 
	 * @throws
	 */
	public boolean changeDriverRole(String userId, Integer userRole);
	
	/**
	 * 
	 * @Title: registerDriver 
	 * @Description: 注册司机(专车司机或出租车司机)
	 * @author YHQ 
	 * @since V2.5.7
	 * @return boolean    返回类型
	 * 
	 */
	public boolean registerDriver(String uuid,ReqRegisterDriverDTO registerDriverDTO);
	
	/**
	 * 
	 * @Title: getSpecialUserVehicleInfo 
	 * @Description: 根据用户Id获取司机认证信息
	 * @param userId 用户Id
	 * @author YHQ 
	 * @since V2.5.7
	 * @return Specialuservehicleinfo    返回类型
	 * 
	 */
	public Specialuservehicleinfo getSpecialUserVehicleInfo(String userId);
	
	/**
	 * 
	 * @Title: getResSyncDriverAuthState 
	 * @Description: 获取车主认证状态
	 * @param  参数说明 
	 * @author hufan
	 * @return 返回类型 
	 * @throws
	 */
	public ResSyncDriverAuthStateDTO getResSyncDriverAuthState(ReqSyncDriverAuthStateDTO reqSyncDriverAuthStateDTO);
	
}
